package com.demo.pojo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 排课表实体类 - 哈尔滨信息工程学院课表管理
 */
@TableName("schedule")
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class Schedule implements Serializable {
    
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long scheduleId;
    
    /**
     * 课程ID
     */
    @TableField("course_id")
    private Long courseId;
    
    /**
     * 教师ID
     */
    @TableField("teacher_id")
    private Long teacherId;
    
    /**
     * 教室ID
     */
    @TableField("classroom_id")
    private Long classroomId;
    
    /**
     * 班级ID
     */
    @TableField("clazz_id")
    private Long clazzId;
    
    /**
     * 时间段ID
     */
    @TableField("time_slot_id")
    private Long timeSlotId;
    
    /**
     * 排课类型：正常/调课/补课/考试
     */
    @TableField("schedule_type")
    private String scheduleType;
    
    /**
     * 状态：ACTIVE-有效 CANCELLED-取消 SUSPENDED-暂停
     */
    @TableField("status")
    private String status;
    
    /**
     * 排课优先级：1-最高 5-最低
     */
    @TableField("priority")
    private Integer priority;
    
    /**
     * 是否固定：1-固定 0-可调整
     */
    @TableField("is_fixed")
    private Integer isFixed;
    
    /**
     * 备注
     */
    @TableField("schedule_remark")
    private String scheduleRemark;
    
    /**
     * 创建时间
     */
    @TableField("create_time")
    private Date createTime;
    
    /**
     * 更新时间
     */
    @TableField("update_time")
    private Date updateTime;
    
    /**
     * 周次（用于前端传递，不存储到数据库）
     */
    @TableField(exist = false)
    private Integer weekNo;
    
    /**
     * 星期几（用于前端传递，不存储到数据库）
     */
    @TableField(exist = false)
    private Integer dayOfWeek;
    
    /**
     * 节次（用于前端传递，不存储到数据库）
     */
    @TableField(exist = false)
    private Integer periodNo;
    
    /**
     * 学期（用于前端传递，不存储到数据库）
     */
    @TableField(exist = false)
    private String semester;
    
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}














